動画変換用のコンテナイメージ(ffmpeg)をECRに登録する
コンニチハ、千葉です。
AWS Batchでffmpegを使った動画変換処理環境を用意する機会がありました。はじめは、Amazon Linuxのコンテナにffmpegをインストールしようかと思って公式ページをみていると、色々コンパイルが必要そうでした。yumやapt-getでサクッとインストールしたくて、さまよっていたら公式のwikiページにビルド済みのコンテナイメージの記載があったのでこちらを利用することにしました。
やりたいこと
今回の要求事項は以下です。
- ffmpegが利用できること
- aws cliが利用できること
- S3に配置したスクリプトを実行する
- ECRからコンテナイメージを利用できること
やってみた
Docker Hubに登録されているffmpeg用のコンテナイメージを確認したところ、centosやubuntuなどが用意されていました。デフォルトはubuntuのようです。今回はubuntuを利用します。これでffmpegがビルドインされているコンテナを利用できます。あとは、AWS CLIを追加でインストールします。また、AWS Labosで提供されている、S3ファイルののスクリプトを実行するfetch-and-runを利用します。
こんな感じでDockerfileを書いてみました。
FROM jrottenberg/ffmpeg RUN apt-get update RUN apt-get install awscli unzip -y ADD fetch_and_run.sh /usr/local/bin/fetch_and_run.sh RUN chmod +x /usr/local/bin/fetch_and_run.sh ENTRYPOINT ["/usr/local/bin/fetch_and_run.sh"]
コンテナイメージをビルドします。
$ ls Dockerfile fetch_and_run.sh $ docker build -t ffmpeg . $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ffmpeg latest 89ead25bf221 12 hours ago 297MB
AWS CLI、ffmpegが利用できるか確認します。
$ docker run -it --entrypoint='bash' ffmpeg # ffmpeg -version ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609 configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-libkvazaar --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 # aws --version aws-cli/1.11.13 Python/3.5.2 Linux/4.9.87-linuxkit-aufs botocore/1.4.70
コンテナイメージは問題なさそうです。 最後にビルドしたコンテナイメージをECRへプッシュします。まずは、ECRリポジトリを作成します。
イメージをプッシュします。(アクセスキーの設定は別途実施してください)
$ $(aws ecr get-login --no-include-email --region ap-northeast-1) WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded $ docker tag ffmpeg:latest xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/ffmpeg:latest $ docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/ffmpeg:latest
ECRにプッシュされていることを確認します。
やりたいことはこれで終了です!
最後に
動画変換用のコンテナイメージを用意することができました。これを使ってバッチ環境を構築していきたいと思います。